package test

//终端为了验证键盘按键的寿命引入一款新的测试机械手，为了验收机械手的工作情况，特组装了一组特殊键盘：所有的键都排列在一行上，
//如：从左到右的顺序，用一个长度为 26 的字符串 buttons （索引从 0 开始，到 25 结束）来表示该键盘的键位布局。
//* 最初的时候，机械手位于左边起第一个按键（也就是索引为 0 的键）的上方。当机械手移动到某一字符所在的键位时，就会在终端上输出该字符。
//* 机械手从索引 i 移动到索引 j 所需要的时间是 |i - j|。现测试时需要使用机械手输出指定的单词 word，请你编写一个程序来计算该机械手输出该单词所需的时间。
//* 示例 1：
//*
//* 输入：buttons = "zyxwvutsrqponmlkjihgfedcba", word = "xyz"
//* 输出：4
//* 解释：
//* 机械手从 0 号键移动到 2 号键来输出 'x'，又移动到 1 号键来输出 'y'，接着移动到 0 号键来输出 'z'。
//* 总用时 = 2 + 1 + 1 = 4.
//* 示例 2：
//*
//* 输入：buttons = "pqrstuvwxyzabcdefghijklmno", word = "phone"
//* 输出：35
//*
//*
//* 提示：
//*
//* buttons.length == 26
//* buttons 按某种特定顺序排列，并包含每个小写英文字母一次。
//* 1 <= word.length <= 10^4
//* word[i] 是一个小写英文字母
//*/

func f(buttons, words string) int {
	m := make(map[byte]int)
	for i := range buttons {
		m[buttons[i]] = i
	}
	lastindex := 0
	ans := 0
	for i := range words {
		ans += abs(m[words[i]] - lastindex)
		lastindex = m[words[i]]
	}
	return ans
}

func abs(a int) int {
	if a < 0 {
		return (-1) * a
	}
	return a
}



